<?php

use Illuminate\Http\Request;

/*
|--------------------------------------------------------------------------
| API Routes
|--------------------------------------------------------------------------
|
| Here is where you can register API routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| is assigned the "api" middleware group. Enjoy building your API!
|
*/

$api = app('Dingo\Api\Routing\Router');

$api->version('v1', [
    'namespace' => 'App\Http\Controllers\Api',
     'middleware' => 'serializer:array'
], function($api) {

  $api->group([
        'middleware' => 'api.throttle',
        'limit' =>config('api.rate_limits.sign.limit'),
        'expires' => config('api.rate_limits.sign.expires'),

  ], function($api) {
    // 短信验证码
    $api->post('verificationCodes', 'VerificationCodesController@store')
        ->name('api.verificationCodes.store');
        //用户注册
    $api->post('users', 'UsersController@store')
            ->name('api.users.store');
            // 图片验证码
$api->post('captchas', 'CaptchasController@store')
    ->name('api.captchas.store');
    // 第三方登录
$api->post('·', 'AuthorizationsController@socialStore')
    ->name('api.socials.authorizations.store');
    // 登录
    $api->post('authorizations', 'AuthorizationsController@store')
        ->name('api.authorizations.store');

        // 刷新token
$api->put('authorizations/current', 'AuthorizationsController@update')
    ->name('api.authorizations.update');
// 删除token
$api->delete('authorizations/current', 'AuthorizationsController@destroy')
    ->name('api.authorizations.destroy');
});

});

$api->group([
       'middleware' => 'api.throttle',
       'limit' => config('api.rate_limits.access.limit'),
       'expires' => config('api.rate_limits.access.expires'),
   ], function ($api) {
       // 游客可以访问的接口

       // 需要 token 验证的接口
       $api->group(['middleware' => 'api.auth'], function($api) {
           // 当前登录用户信息
           $api->get('user', 'UsersController@me')
               ->name('api.user.show');
       });
   });
